package solution;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: ws
 * Date: 2023-01-17
 * Time: 21:00
 */
public class Solution2 {
    //https://leetcode.cn/problems/perfect-number/submissions/395955782/
    //但目前发现的完美数只有6,28,496,8128,33550336，所以不是这5个就是false（面向结果编程<🤣>）
    class Solution {
        public boolean checkPerfectNumber(int num) {
            if (num == 1) {
                return false;
            }
            int sum = 1;//1 为所有数的因子，所以初始即加上
            //同理从 2 开始遍历
            for (int i = 2; i * i <= num; i++) {//一个数的因子（除它本身）最大为它的平方根
                if (num % i == 0) {
                    sum += i;//第一个因子
                    if (i * i < num) {//两个因子不能相同
                        sum += num / i;//第二个因子
                    }
                }
            }
            return sum == num;
        }
    }
}
